An important issue in networks connecting network components through data connections or data links relates to the optimized use of the data connections. Ideally, the utilized network protocol will provide for adjustment of transmission parameters for transmitting messages via the data connections in such a way, that the available bandwidth of the data connections are used fully, while avoiding a loss of data. This aim may be achieved by appropriate congestion control in order to estimate or calculate an optimal transmission parameter such as an optimal transmission rate with which data of a message are transmitted. If the transmission rate is too low, the bandwidth of the physical connection is not utilized fully. On the other hand, a transmission rate adjusted too high might lead to overflow of transmission buffers and eventually to data loss.
Transport protocol implementations for reliable data transmission based on an IP (Internet Protocol) stack provide for data packet acknowledgement in order to recognize data losses. In a reliable data transport protocol the lost packets will be retransmitted. The protocol implementations mostly handle acknowledge messages using byte sequencing or packet sequencing for data identification. After the elapse of a certain time period the transmitting device interprets the absence of such an acknowledge message for a certain time period as a packet loss. The respective data will then be retransmitted by the transmitter device. The waiting time period before retransmission is set to be at least the Round Trip Time (RTT) between transmitting and receiving end plus some margin since no data acknowledge can occur in less than RTT since the sending time point.
The invention starts with the recognition that not only data packets can get lost in IP networks but also acknowledge messages. In a reliable transport protocol like TCP (Transmission Control Protocol) the missing of an acknowledge message is interpreted by the data sender as a data packet loss, leading to a retransmission of the respective data, although they are already received by the receiver.
In more recent transport protocol proposals like UDT (UDP-based Data Transfer Protocol, where UDP stands for User Datagram Protocol) it is suggested to send also acknowledge packets to acknowledge messages—so called ACKACKs in order to avoid these unnecessary double data transmissions. It is state-of-the art in this case at the data receiver side (this is the ACK-emitter) to wait also at least an RTT before issuing a retransmission of an acknowledge message.
It is important to know that the number of data packets that are acknowledged in one ACK message is subject to the protocol implementation or it is programmable. In the field of professional high speed networking, e.g. based on 10 GBit Ethernet technology an implementation can be that acknowledge messages are issued every 10 ms. This means that all the data packets received in that time period will be checked in regard to one or more characteristic like the correct sequence numbering. If there is no violation of the sequence numbering, the ACK message will be generated. The ACK message reports the correct reception of all the data packets received in the interval from the previous ACK message on. If there is a violation, it means that all the data packets received in that period are not acknowledged and thus the sender needs to repeat them.
If the ACKACK message is missing, the receiver will generate an ACKACK message a second time after elapse of at least the RTT. Clearly it has the disadvantage that the sender can not free the corresponding part of the protocol buffer before ACK has been received.